package com.anti.core.security.service;

import com.anti.modular.sys.auth.pojo.SysLoginUser;
import com.anti.modular.sys.user.entity.SysUser;
import org.springframework.security.core.Authentication;

import javax.servlet.http.HttpServletRequest;

/**
 * @Description TODO
 * @Author anTi
 * @Date 2021-2-24
 */
public interface AuthService {
    /**
     * 账号密码登录
     */
    String login(String account, String password);

    /**
     * 根据已有用户信息登录
     **/
    String doLogin(SysUser sysUser);

    /**
     * 从request获取token
     */
    String getTokenFromRequest(HttpServletRequest request);

    /**
     * 根据token获取登录用户信息
     */
    SysLoginUser getLoginUserByToken(String token);

    /**
     * 退出登录
     *
     * @author xuyuxiang
     * @date 2020/3/16 15:03
     */
    void logout();

    /**
     * 设置SpringSecurityContext上下文，方便获取用户
     * @param sysLoginUser 当前登录用户信息
     * @author xuyuxiang
     * @date 2020/3/19 19:59
     */
    void setSpringSecurityContextAuthentication(SysLoginUser sysLoginUser);

    /**
     * 获取SpringSecurityContext中认证信息
     */
    Authentication getAuthentication();

    /**
     * 校验token是否正确
     */
    void checkToken(String token);

    /**
     * 根据系统用户构造用户登陆信息
     **/
    SysLoginUser genSysLoginUser(SysUser sysUser);

    /**
     * 清除登陆的cookie信息
     **/
    void deleteLoginCookie();
}
